The present disclosure relates generally to computing systems, and more particularly to flexible holding storage during messaging.
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option is a computing system. Computing systems may vary in complexity from a single processor operating in relative isolation to large networks of interconnected processors. The interconnected processors may be in close proximity to each other or separated by great distances both physically and as distance is measured in computer networking terms. The interconnected processors may also work together in a closely cooperative fashion or in a loose weakly coupled fashion. Because technology and processing needs and requirements may vary between different applications, the structure and arrangement of the computing system may vary significantly between two different computing systems. The flexibility in computing systems allows them to be configured for both specific users, specific uses, or for more general purposes. Computing system may also include a variety of hardware and software components that may be configured to process, store, and communicate information based on the needs of the users and the applications.
Additionally, some examples of computing systems include non-transient, tangible machine-readable media that include executable code that when run by one or more processors, may cause the one or more processors to perform the steps of methods described herein. Some common forms of machine readable media include, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, and/or any other medium from which a processor or computer is adapted to read.
Computers, processors, and software systems often share information and communicate with each other using messaging. In many situations, the messaging is handled in an asynchronous fashion using an intermediary messaging system. This allows a message producer or sender to generate and send a message without having to establish a communication channel directly with the message consumer or receiver. This provides many advantages for the messaging as the producer is able to generate and send a message without having to address processing speed, buffering differences, and the like between itself and the consumer, but rather delegates that responsibility to the messaging system. This approach further allows the producer to send messages even when the consumer is offline.
In order to support this asynchronous messaging, the messaging system typically uses some type of holding storage to hold onto the message between the time it is received from the producer and the time it is delivered to the consumer. The use of this holding storage may also support the ability to send the message to multiple consumers. Most messaging systems take a simplistic approach to the holding storage by utilizing a holding storage type and capacity selected by an administrator based on anticipated message volumes, types, sizes, and length of time messages are expected to be in held in the holding storage. The efficiency and utilization of the messaging system, however, may be sensitive to message properties, such as type and size, as well as the changing status of the holding storage. As a consequence, this may make the one-size-fits-all approach to holding storage less than ideal for many messaging systems in practice.
Accordingly, it would be desirable to provide improved holding storage for messaging systems.